package com.jnetwork.servlet.centroformacion;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import com.jnetwork.exception.DAOExcepcion;
import com.jnetwork.modelo.CentroFormacion;
import com.jnetwork.modelo.Usuario;
import com.jnetwork.negocio.GestionCentroFormacion;

/**
 * Servlet implementation class for Servlet: RolInsertarServlet
 * 
 */
@WebServlet("/CentroFormacionInsertarServlet")
@MultipartConfig
public class CentroFormacionInsertarServlet extends
		javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
	static final long serialVersionUID = 1L;

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public CentroFormacionInsertarServlet() {
		super();
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
	 * HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
	 * HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html;charset=UTF-8");
		String nombre = request.getParameter("nombre");
		String tipo = request.getParameter("tipo");
		String url = request.getParameter("url");
		Part logoPart = request.getPart("logo");
		String fileName = getFileName(logoPart);
		Usuario usuarioCreacion = (Usuario) request.getSession().getAttribute(
				"USUARIO_ACTUAL");
		OutputStream out = null;
		InputStream filecontent = null;
		final PrintWriter writer = response.getWriter();
		try {
			// SE PROCESA ARCHIVO
			if (fileName != null && !fileName.trim().equals("")) {
				String path = request.getSession().getServletContext()
						.getRealPath("/")
						+ "img";

				out = new FileOutputStream(new File(path + File.separator
						+ fileName));
				filecontent = logoPart.getInputStream();

				int read = 0;
				final byte[] bytes = new byte[1024];

				while ((read = filecontent.read(bytes)) != -1) {
					out.write(bytes, 0, read);
				}

			}

			// SE PROCESA REGISTRO EN LA BASE DE DATOS

			GestionCentroFormacion negocio = new GestionCentroFormacion();

			CentroFormacion newCentroFormacion = new CentroFormacion();
			newCentroFormacion.setNombre(nombre);
			newCentroFormacion.setTipo(tipo);
			newCentroFormacion.setLogo(fileName);
			newCentroFormacion.setUrl(url);
			newCentroFormacion.setUsuarioCreacion(usuarioCreacion);

			Integer idCentroFormacion = negocio.insertar(newCentroFormacion);

			if (idCentroFormacion > 0) {
				request.setAttribute("SUCCESS_MENSAJE",
						"Se creo el centro de informacion satisfactoriamente con id:"
								+ idCentroFormacion);
			} else {
				request.setAttribute("ERROR_MENSAJE",
						"ERROR: No se creo el centro de informacion.");
			}
			RequestDispatcher rd = getServletContext().getRequestDispatcher(
					"/CentroFormacionBuscarServlet");
			rd.include(request, response);
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("ERROR_MENSAJE", e.getMessage());
			RequestDispatcher rd = getServletContext().getRequestDispatcher(
					"/CentroFormacionBuscarServlet");
			rd.include(request, response);
		} finally {
			if (out != null) {
				out.close();
			}
			if (filecontent != null) {
				filecontent.close();
			}
			if (writer != null) {
				writer.close();
			}
		}

	}

	private String getFileName(final Part part) {
		for (String content : part.getHeader("content-disposition").split(";")) {
			if (content.trim().startsWith("filename")) {
				return content.substring(content.indexOf('=') + 1).trim()
						.replace("\"", "");
			}
		}
		return null;
	}
}